﻿#ifndef CModelMange_H
#define CModelMange_H
/********************************************************************************
** @ Date:2025/08/19
** @ Author: HanJiaXin
** @ Description:全局模块管理类,将所有的设备统一管理起来
** @ Version:1.0.0
** @ ClassName:CModelMng
** @ Fun:
********************************************************************************/
#include <QObject>
#include <vlc/vlc.h>
#include "HKAIDevice.h"
#include "CIsapiServer.h"
#include "CExportResultTh.h"
#include "CLogOper.h"

enum EPubCardType
{
	enPubStatisticsChat,//公共卡片报警统计图
	enPubAlarmTable,//公共卡片报警表格
};

class CModelMng  : public QObject
{
	Q_OBJECT

public:
	static CModelMng& instance()
	{
		static CModelMng instance;
		return instance;
	}

	QVector<QWidget*>* getPublicCardList();
	QWidget* getPublicCard(int nCardId, QString* psCardGuid);

	bool m_bDbInit;//数据库初始化结果
	QVector<HKAIDevice*> m_vecDev;
	libvlc_instance_t* m_pVlcInstance;  // 每个视频实例

private slots:
	void slotNewRequest(QByteArray &requestData);

private:
	CModelMng();
	~CModelMng();
	void initCfg();

	//海康json报文处理
	void extractJsonAlarm(const QString &sRequest);//解析服务器发来的json报警请求
	void processAlarmData(const QJsonObject &json);//处理报警数据
	void analyzeDetectionResults(const AlarmData &alarmData);

	//海康xml报文处理
	void extractXmlAlarm(const QString &sRequest);//解析服务器发来的json报警请求
	void analyzeXmlDetectionResults(const AlarmData &alarmData);

	//坤云json报文处理
	void extractKYJsonAlarm(const QString &sRequest);//解析服务器发来的json报警请求
	void processKYAlarmData(const QJsonObject &json);//处理报警数据
	void analyzeKYDetectionResults(const AlarmData &alarmData);

	CIsapiServer* m_pIsApiServer = nullptr;
	CExportResultTh* m_pResultTh=nullptr;
	
};

#endif